linux library
#command #linker
LD_LIBRARY_PATH
環境変数でこういうのがあるのをしらなかった。どれだけ知らないか、、
$ grep "PATH" ~/.bashrc
LD_PRELOAD
リンカー?リンカーされる?順番によるエラーもあり得る
その場合、この環境変数を設定しておけば、先にshrared object(xxx.soファイル)を読んでおいてくれる
ld.so(8) - Linux manual page
dynamic linker/loader
パスがとおっているかをcheck
$ ldd xxx.so
Linux共有ライブラリが見つからない時にやること - Qiita
$ ldd /usr/lib/.../xxxxx.so
print shared object dependencies
Find a Program's Shared Libraries With the "ldd" Command
更に、対象の soファイルに対して,依存してる soファイルをみる
$ objdump -p hoge.so|grep NEEDED
設定方法
Linux: ライブラリの動的リンクでエラーが出た場合の対処方法より、いくつか方法がある
システム全体に設定を反映する場合は、「/etc/ld.so.conf」に記載してあげよう。
/etc/ld.so.conf に記載する
include /etc/ld.so.conf.d/*.conf に記載してもよい
LD_LIBRARY_PATH
これは手軽。.bashrcの肥大化をどう考えるか
LDFLAGS="-L/usr/local/lib -wl, -rpath /usr/local/lib"でコンパイルする。
俺には無縁...
設定のcheck
$ ldconfig -v
自分の場合、1500行くらいでた。dynamic linker...という単語が目に付く。dynamicか否かが問題になることはありそう。
java - What is LD_LIBRARY_PATH and how to use it? - Stack Overflow
the path which the linker should look in to while linking dynamic libraries/shared libraries.
javaで、よくエラーになるらしい。コンパイルするからか。
#env